package com.fitso.model.calculator.nutrition;

/**
 * Interface provided for implementations that can provide breakdown
 * calculations on a given food.
 * 
 * @author timothystorm
 */
public interface FoodCalculator {

	/**
	 * Utility method for getting the ratio of energy provided by carbohydrates
	 */
	public Double carbEnergyRatio();

	/**
	 * Utility method for getting the ratio of mass provided by carbohydrates
	 */
	public Double carbMassRatio();

	/**
	 * <p>
	 * Calculates the calorie density - not to be confused with nutritional
	 * density.
	 * </p>
	 * <table>
	 * <tr>
	 * <td>0.0-0.6</td>
	 * <td>Best nutrition - Very low calories per mass - apple</td>
	 * </tr>
	 * <tr>
	 * <td>0.7-1.5</td>
	 * <td>Good nutrition - Low calories per mass - oatmeal</td>
	 * </tr>
	 * <tr>
	 * <td>1.6-4.0</td>
	 * <td>Acceptable nutrition - Medium calories per mass - bagel</td>
	 * </tr>
	 * <tr>
	 * <td>&gt;4.0</td>
	 * <td>Poor nutrition - High calories per mass - twinkie</td>
	 * </tr>
	 * </table>
	 */
	public Double calorieDensityRatio();

	/**
	 * Utility method for getting the ratio of calories provided by fat
	 */
	public Double fatEnergyRatio();

	public Double fatMassRatio();

	/**
	 * Utility method for getting the ratio of calories provided by protein
	 */
	public Double proteinEnergyRatio();

	public Double proteinMassRatio();
}